package products;

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;


/**
 * The persistent class for the producto database table.
 * 
 */
@Entity
@Table(name="producto")
@NamedQueries({
    @NamedQuery(name = "Producto.findAll", query = "SELECT p FROM Producto p"),
    @NamedQuery(name = "Producto.findByIdProducto", query = "SELECT p FROM Producto p WHERE p.idProducto = :idProducto"),
    @NamedQuery(name = "Producto.findByModelo", query = "SELECT p FROM Producto p WHERE p.modelo = :modelo"),
    @NamedQuery(name = "Producto.findByValorCompra", query = "SELECT p FROM Producto p WHERE p.valorCompra = :valorCompra"),
    @NamedQuery(name = "Producto.findByValorVentaUrucel", query = "SELECT p FROM Producto p WHERE p.valorVentaUrucel = :valorVentaUrucel"),
    @NamedQuery(name = "Producto.findByValorVentaML", query = "SELECT p FROM Producto p WHERE p.valorVentaML = :valorVentaML"),
    @NamedQuery(name = "Producto.findByValorVentaFinanciado", query = "SELECT p FROM Producto p WHERE p.valorVentaFinanciado = :valorVentaFinanciado")})
public class Producto implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "idProducto")
    private Integer idProducto;
	@Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 45)
    @Column(name = "modelo")
    private String modelo;
	@Basic(optional = false)
    @NotNull
    @Column(name = "valorCompra")
    private double valorCompra;
	@Basic(optional = false)
    @NotNull
    @Column(name = "valorVentaFinanciado")
    private double valorVentaFinanciado; 
	@Basic(optional = false)
    @NotNull
    @Column(name = "valorVentaML")
    private double valorVentaML;
	@Basic(optional = false)
    @NotNull
    @Column(name = "valorVentaUrucel")
    private double valorVentaUrucel;
	private Categoria categoria;
	private Marca marca;
	@OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
	private ProductoInventario productoInventario;
	@OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
	private ProductoPreRegistro productoPreRegistro;

    public Producto() {
    }

    public Producto(Integer idProducto, String modelo, double valorCompra, double valorVentaUrucel, double valorVentaML, double valorVentaFinanciado) {
        this.idProducto = idProducto;
        this.modelo = modelo;
        this.valorCompra = valorCompra;
        this.valorVentaUrucel = valorVentaUrucel;
        this.valorVentaML = valorVentaML;
        this.valorVentaFinanciado = valorVentaFinanciado;
    }
    
	public Integer getIdProducto() {
		return this.idProducto;
	}

	public void setIdProducto(Integer idProducto) {
		this.idProducto = idProducto;
	}


	public String getModelo() {
		return this.modelo;
	}

	public void setModelo(String modelo) {
		this.modelo = modelo;
	}


	public double getValorCompra() {
		return this.valorCompra;
	}

	public void setValorCompra(double valorCompra) {
		this.valorCompra = valorCompra;
	}


	public double getValorVentaFinanciado() {
		return this.valorVentaFinanciado;
	}

	public void setValorVentaFinanciado(double valorVentaFinanciado) {
		this.valorVentaFinanciado = valorVentaFinanciado;
	}


	public double getValorVentaML() {
		return this.valorVentaML;
	}

	public void setValorVentaML(double valorVentaML) {
		this.valorVentaML = valorVentaML;
	}


	public double getValorVentaUrucel() {
		return this.valorVentaUrucel;
	}

	public void setValorVentaUrucel(double valorVentaUrucel) {
		this.valorVentaUrucel = valorVentaUrucel;
	}


	//uni-directional many-to-one association to Categoria
    @ManyToOne
	@JoinColumn(name="idCategoria")
	public Categoria getCategoria() {
		return this.categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}
	

	//uni-directional many-to-one association to Marca
    @ManyToOne
	@JoinColumn(name="idMarca")
	public Marca getMarca() {
		return this.marca;
	}

	public void setMarca(Marca marca) {
		this.marca = marca;
	}
	
	public ProductoInventario getProductoInventario() {
        return productoInventario;
    }

    public void setProductoInventario(ProductoInventario productoinventario) {
        this.productoInventario = productoinventario;
    }

    public ProductoPreRegistro getProductoPreRegistro() {
        return productoPreRegistro;
    }

    public void setProductoPreRegistro(ProductoPreRegistro productopreRegistro) {
        this.productoPreRegistro = productopreRegistro;
    }
	
}